#ifndef __BE_OBJECT__
#define __BE_OBJECT__


class Object : public NamedObject
{
 private:
  String    meshName;
  GLMeshPtr mesh;
  Turple3f  location;
  Turple2f  orientation;
  ControllerPtr controller;

 public:
  enum
  {
    OBJECT_X,
    OBJECT_Y,
    OBJECT_Z,
    OBJECT_PHI,
    OBJECT_THETA,
  };

  Object();
  ~Object();

  LocationControllerPtr getLocationController();

  bool update(const UINT64 &_time) __FASTCALL;

  void setMeshName( const String &_name );
  const String& getMeshName() const;
  void setMesh( GLMeshPtr _mesh);
  void setLocation(float _x, float _y, float _z);
  void setOrientation(float _phi, float _theta);
  void set(unsigned char _key, float _value);
  void setController(ControllerPtr _controller);
  friend class Scene;
};

#endif
